import 'dart:convert';

import '../utils.dart';
const messageEnd = "\r\n";

String _msg = null;

typedef MessageHandler<T> = void Function(T value);

void onDataFun(List<int> event, MessageHandler<String> handler) {
  _appendMsg(utf8.decode(event));

  if (_msg == null || _msg.isEmpty) return;

  if (_msg.endsWith(messageEnd)) {
    for (var s in _msg.split(messageEnd)) {
      if(s.isNotEmpty) {
        handler(base64ToString(s));
      }
    }
    _msg = null;
  }
}

void _appendMsg(String s) {
  if (s == null) {
    return;
  }

  if (_msg == null) {
    _msg = s;
    return;
  }

  _msg += s;
}
